package com.cetool.autocms.mapper.user;

import com.cetool.autocms.pojo.domain.user.UserInfoDO;
import com.cetool.autocms.pojo.param.user.QueryUserListParam;
import com.cetool.autocms.pojo.param.user.SaveUserParam;
import com.cetool.autocms.pojo.param.user.UpdateUserParam;

import java.util.List;

/**
 * 用户管理持久层
 *
 * @author 戴越
 * @date 2021/11/9
 */
public interface UserMapper {

    /**
     * 新增管理员用户
     *
     * @param param 新增用户请求参数实体
     * @return int
     * @author 戴越
     * @date 2021/11/9
     */
    int saveUser(SaveUserParam param);

    /**
     * 查询管理员是否存在
     *
     * @param param 新增用户请求参数实体
     * @return int
     * @author 戴越
     * @date 2021/11/9
     */
    int queryUserIsExist(SaveUserParam param);

    /**
     * 查询管理员用户列表
     *
     * @param param 分页查询管理员用户信息请求实体
     * @return 管理员用户信息对象
     * @author 戴越
     * @date 2021/11/10
     */
    List<UserInfoDO> listUser(QueryUserListParam param);

    /**
     * 根据用户id查询用户信息详情
     *
     * @param userId 用户主键id
     * @return 管理员用户信息对象
     * @author 戴越
     * @date 2021/11/10
     */
    UserInfoDO getUser(Integer userId);

    /**
     * 根据用户id删除用户信息
     *
     * @param userId 用户主键id
     * @return int
     * @author 戴越
     * @date 2021/11/10
     */
    int deleteUser(Integer userId);

    /**
     * 修改管理员用户信息
     *
     * @param param 修改管理员用户请求参数实体
     * @return int
     * @author 戴越
     * @date 2021/11/10
     */
    int updateUser(UpdateUserParam param);

}
